package cliente_diseno2011;

import DataBase.*;
import java.awt.List;
import java.io.FileNotFoundException;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JPanel;
import AdministradorConfiguracion.*;

public class Modelo {

	private DBManager base;

	public Modelo() throws FileNotFoundException {
		base = new DBManager();
		// base.datosPrueba();
		admin = new AdminConfiguracion(base);
		logTemp = new ArrayList<Eleccion>();
	}

	public Modelo(DBManager db) {
		base = db;
		admin = new AdminConfiguracion(base);
		logTemp = new ArrayList<Eleccion>();
	}

	ArrayList<Eleccion> logTemp;
	private AdminConfiguracion admin;
	private boolean votacion_habilitada = false;

	public String chequearTarjeta(String tarjeta) throws FileNotFoundException {

		if (tarjeta.charAt(0) == 'v') {

			if (votacion_habilitada) {
				System.out.println("quiere mete el numero "
						+ tarjeta.substring(1, tarjeta.length()));
				Votante vot = base.getVotante(tarjeta.substring(1,
						tarjeta.length()));
				if (vot == null) {
					return new String("error no existe");
				} else {

					if (!vot.getFinalizo().equals("true")) {

						// return new ListaPost(postulantes,"Etapa 1");
						return new String("votante");
					} else {
						return new String("error voto");
					}
					// return new String ( "votante");
				}
			} else {
				return new String("error apertura");
			}
		} else {
			if (tarjeta.charAt(0) == 'p') {
				Autoridad a = base.getPresidenteTitular();

				if (a.getPin().equals(tarjeta.substring(1, tarjeta.length()))) {
					return new String("presidente");
				}
				return new String("error presidente");
			} else {

				if (tarjeta.charAt(0) == 'a') {
					Administrador a = base.getAdministrador(tarjeta.substring(
							1, tarjeta.length()));
					if (a != null) {
						return new String("administrador");
					} else {
						return new String("error administrador");
					}
				}
				return new String("ninguno");
			}

		}

	}

	// public ArrayList<ListaCandidatos> getEtapa(int i ){
	// return admin.getEtapa(i);

	// }

	public Etapa getEtapa(int i) {
		return admin.getEtapa(i);
	}

	public void guardarEleccion(Eleccion e) {
		logTemp.add(e);
	}

	public void eleminarEleccion() {
		logTemp.remove(logTemp.size() - 1);
	}

	public void eliminarTemp() {
		logTemp = new ArrayList<Eleccion>();
	}

	public ArrayList<Eleccion> getEleccion() {
		return logTemp;
	}

	public void almacenarEleccion() {
		for (Eleccion e : logTemp) {
			if (!e.getEleccion().equals("Blanco")) {

				System.out.println(" agrega " + e.getEtapa() + "  "
						+ e.getEleccion());
				base.agregarVoto(e.getEtapa(), e.getEleccion());
			}
		}

	}

	public void finalizarVoto(String tarjeta) {
		System.out.println("el votaten con tarjeta "
				+ tarjeta.substring(1, tarjeta.length()));
		base.finalizoVoto(base.getVotante(tarjeta.substring(1, tarjeta.length())));

	}

	public String getDatosEnviar() {
		return base.getResultadosParaTransmitir();
	}

	public void setVotacion(boolean t) {
		votacion_habilitada = t;
	}

	public boolean cambiarPresidente(String ping) {
		Autoridad a = base.getAutoridad(ping);
		if (a != null) {
			base.setPresidenteNuevo(ping);
			return true;
		}
		return false;

	}

}